"use strict";

const __mid = require("./admin/__mid");

class content {
    constructor() {
        //param默认就是/:id，若要改变路由，则可以设置此属性，比如设置为/:name
        //this.param = '/:id'
    }

    //以下方法，若不需要，要去掉，避免无意义的路由。

    //获取资源具体内容
    // 对应路由GET /content/:id
    async get(c) {
        let sqltext = `SELECT * FROM content WHERE id=$1`;
        let r = await c.service.psql.query(sqltext, [c.param.id]);
        if (r.rowCount === 0) {
            return c.status(404).send("content not found");
        }
        c.send(r.rows[0]);
    }

    //创建资源
    // 对应路由POST /content
    async post(c) {
        try {
            // 提交的body数据通过c.body获取
            let data = JSON.parse(c.body);
            let sqltext =
                `INSERT INTO content(id,add_time,detail,title,update_time)` +
                ` VALUES ($1,$2,$3,$4,$5)`;

            /*  text/* :c.body string 
            multipart: c.body={}  c.files={} 
            others:c.body=c.rawBody(buffer类型) */

            //生成唯一ID
            let id = c.helper.makeId();
            let tm = Date.now();
            let r = await c.service.psql.query(sqltext, [id, tm, data.detail, data.title, tm]);

            if (r.rowCount === 0) {
                return c.status(500).send("failed");
            }
            c.send(id);
        } catch (err) {
            c.status(404).send("it is not json data");
        }
    }

    //更新资源
    // 对应路由PUT /content/:id
    // async put(c) {}

    //获取列表
    // 对应路由GET /content
    async list(c) {
        let ret = await c.service.psql.query("select * from content");

        // 等效于c.res.body=ret.rows
        c.send(ret.rows);
    }

    //删除资源
    // 对应路由DELETE /content/:id
    async delete(c) {
        let sqltext = `DELETE FROM content WHERE id=$1`;
        let r = await c.service.psql.query(sqltext, [c.param.id]);
        if (r.rowCount === 0) {
            c.send(r);
        }

    }
    __mid(){
        return [
            {
                name:'token-verify',
                path:['post','delete']
            }
        ]
    }
}

module.exports = content;
